package com.chen.controller;
import com.chen.vo.TreeVo;
import com.chen.base.ResponseResult;
import com.chen.dto.DeptDto;
import com.chen.service.DeptService;
import com.chen.vo.DeptVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;

/**
 * 部门前端控制器
 */
@Slf4j
@RestController
@RequestMapping("dept")
public class DeptController {

    @Resource
    DeptService deptService;


    /**
     *  创建部门表
     * @param deptDto 部门DTO对象
     * @return Boolean
     */
    @PutMapping
    public ResponseResult<DeptVo> createDept(@RequestBody DeptDto deptDto) {
        return ResponseResult.success(deptService.createDept(deptDto));
    }

    /**
     *  修改部门
     * @param deptDto 部门DTO对象
     * @return Boolean 是否修改成功
     */
    @PatchMapping
    public ResponseResult<Boolean> updateDept(@RequestBody DeptDto deptDto) {
        return ResponseResult.success(deptService.updateDept(deptDto));
    }

    /**
     * 启用-禁用部门
     * @param deptDto – 部门DTO对象
     * @return Boolean 是否修改成功
     */
    @PatchMapping("/is_enable")
    public ResponseResult<Boolean> isEnable(@RequestBody DeptDto deptDto){
        return ResponseResult.success(deptService.isEnable(deptDto));
    }

    /**
     * 删除部门
     */
    @DeleteMapping("/{deptId}")
    public ResponseResult remove(@PathVariable String deptId) {
        return ResponseResult.success(deptService.deleteDeptById(deptId));
    }

    /***
     *  多条件查询部门列表
     * @param deptDto 部门DTO对象
     * @return List<DeptVo>
     */
    @PostMapping("/list")
    public ResponseResult<List<DeptVo>> deptList(@RequestBody DeptDto deptDto) {
        List<DeptVo> deptVoList = deptService.findDeptList(deptDto);
        return ResponseResult.success(deptVoList);
    }

    /**
     *  组织部门树形
     * @return
     */
    @PostMapping("/tree")
    public ResponseResult<TreeVo> deptTreeVo() {
        TreeVo treeVo = deptService.deptTreeVo();
        return ResponseResult.success(treeVo);
    }

}
